<template>
  <div class="page-department">
    <div class="component-mainHeader">
      <div class="top">
        <div class="topleft">
          <p>
            <span class="iconfont" style="color:#1abc9a;margin-right:3px;">&#xe607;</span>负责人信息
          </p>
        </div>
        <div class="topright">
          <el-button type="info" @click="$router.go(0)">
            <span style="font-weight:700;margin-right:5px;" class="iconfont">&#xe662;</span>刷新
          </el-button>
        </div>
      </div>
    </div>

    <div>
      <div class="component-searchHeader">
        <div class="search-header">
          <div class="left-title">
            <p class="left-text">
              <span class="iconfont">&#xe63d;</span> 筛选查询
            </p>
            <div class="right">
              <button @click="findRes">查询</button>
            </div>
          </div>
        </div>
      </div>

      <div class="component-search-box">
        <el-form :inline="true" :model="formInline" class="demo-form-inline">
          <el-form-item label="输入搜索：">
            <el-input
              v-model="formInline.leaderName"
              placeholder="负责人姓名"
              clearable
              style="width:217px;"
            ></el-input>
          </el-form-item>
          <el-form-item label="区域:">
            <el-select v-model="formInline.area" placeholder="请选择区域" clearable>
              <el-option
                v-for="item in areaSelect"
                :key="item.Id"
                :label="item.name"
                :value="item.Id"
              ></el-option>
            </el-select>
          </el-form-item>
        </el-form>
      </div>

      <div class="component-listHeader">
        <div class="search-header">
          <div class="left-title">
            <p class="left-text">
              <span class="iconfont">&#xe61e;</span>
              区负责人信息
            </p>
            <div class="right">
              <button @click="handleAdd('1')" style="width:135px;">添加大区负责人</button>
            </div>
          </div>
        </div>
      </div>

      <div class="table">
        <el-table ref="multipleTable" :data="info" tooltip-effect="dark" style="width:100%" border>
          <el-table-column label="区域" align="center" width="220" prop="areaName"></el-table-column>
          <el-table-column label="负责人" align="center" width="220" prop="userTruename"></el-table-column>
          <el-table-column label="手机号" align="center" width="220" prop="userPhone"></el-table-column>
          <el-table-column label="账号" align="center" width="220" prop="userName"></el-table-column>
          <el-table-column label="操作信息" align="center">
            <template slot-scope="scope">
              <a class="options" @click.prevent="delLeader(scope.row)">删除</a>
              <a class="options" @click.prevent="handleAdd(scope.row)">编辑</a>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <!-- 分页 -->
      <div class="component-paging" v-if="info.length > 0">
        <div class="table-bottom">
          <div class="bottom-left" style="margin-left: 42px;"></div>
          <div class="paging">
            <div class="paging-left">
              <p>
                共
                <span>{{Math.ceil(total/pageSize)}}</span> 页/
                <span>{{total}}</span> 条数据
              </p>
            </div>
            <el-pagination
              background
              @size-change="SizeChange($event,dataInit,currentPage,pageSize)"
              @current-change="CurrentChange($event,dataInit,currentPage,pageSize)"
              :current-page="currentPage"
              :page-sizes="[10, 20, 30]"
              :page-size="pageSize"
              layout="sizes, prev, pager, next, jumper"
              :total="total"
            ></el-pagination>
          </div>
        </div>
      </div>
    </div>

    <!--项目部弹框-->
    <div class="component-models">
      <el-dialog :title="dialogTitle" :visible.sync="dialog.flag" width="580px">
        <el-form
          :model="dialog"
          :rules="rules"
          ref="areaForm"
          label-width="200px"
          class="demo-ruleForm"
        >
          <el-form-item
            label="区域负责人名称："
            style="text-align
          :left;margin-bottom:20px;"
            prop="userTruename"
          >
            <el-input v-model="dialog.userTruename" style="width:217px;"></el-input>
          </el-form-item>
          <el-form-item
            label="区域负责人手机号："
            style="text-align
          :left;margin-bottom:20px;"
            prop="userPhone"
          >
            <el-input v-model="dialog.userPhone" style="width:217px;"></el-input>
          </el-form-item>
          <el-form-item
            label="负责区域："
            style="text-align
          :left;margin-bottom:20px;"
            prop="areaId"
          >
            <el-select
              v-model="dialog.areaId"
              placeholder="请选择地区"
              style="width:217px;left:0;"
              @change="changeManage"
            >
              <el-option
                v-for="item in dialog.orgs"
                :key="item.Id"
                :label="item.name"
                :value="item.Id"
              ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="账号：" style="text-align:left;margin-bottom:20px;" prop="userName">
            <el-input v-model="dialog.userName" style="width:217px;" :disabled="rightFlag"></el-input>
          </el-form-item>
          <el-form-item label="新密码：" style="text-align:left;margin-bottom:20px;" prop="userPwd">
            <el-input type="password" v-model="dialog.userPwd" style="width:217px;"></el-input>
          </el-form-item>
          <el-form-item label="是否启用:" prop="userStatus" style="text-align:left;">
            <el-switch v-model="dialog.userStatus" active-color="#1abc9a" inactive-color="#e4e4e4"></el-switch>
          </el-form-item>
        </el-form>
        <span slot="footer" class="dialog-footer">
          <el-button @click="dialog.flag = false">取消</el-button>
          <el-button @click="submitBind('areaForm')">绑定</el-button>
        </span>
      </el-dialog>
    </div>
  </div>
</template>

<script>
export default {
  name: "operation",
  data() {
    return {
      ms_roleName: localStorage.getItem("roleName"),
      // 表格数据
      info: [{}],
      // 条件查询
      formInline: {
        leaderName: "",
        area: ""
      },
      // 区域下拉框
      areaSelect: [],
      // 数据总条数
      total: 0,
      // 每页显示数据的条数
      pageSize: 10,
      // 当前显示的页面页码
      currentPage: 1,
      dialog: {
        flag: false,
        orgs: [],
        userPhone: "",
        userTruename: "",
        userName: "",
        userStatus: "",
        areaId: "",
        level: "",
        area: "",
        userPwd: "",
        userId: "",
        orgId: ""
      },
      dialogTitle: "",
      oldPwd:"",
      //  表单验证规则
      rules: {},
      rightFlag: false
    };
  },
  created() {
    // 表格数据
    this.dataInit();
    this.selectInit();
  },
  mounted() {},
  methods: {
    // 下拉框选项查询
    selectInit() {
      var that = this;
      let suCb = function(res) {
          console.log("下拉框信息", res);
          that.areaSelect = that.deepClone(res.data.data);
          console.log("areaSelect", that.areaSelect);
          that.dialog.orgs = that.deepClone(res.data.data);
        },
        erCb = function(res) {},
        palyParam = {
          url: "/api/web/ProConStructionManage/getArea",
          methods: "post",
          data: {},
          success: suCb,
          error: erCb
        };
      this.$https(palyParam);
    },
    // 表格数据
    dataInit() {
      let that = this,
        suCb = function(res) {
          console.log("表格查询结果", res);
          that.total = res.data.data.rowCount;
          that.info = res.data.data.records;
        },
        erCb = function(res) {},
        postData = {
          pageCurrent: that.currentPage,
          pageSize: that.pageSize,
          areaId: that.formInline.area,
          leaderName: that.formInline.leaderName
        },
        palyParam = {
          url: "/api/web/ProConStructionManage/getAreaCompany",
          methods: "post",
          data: postData,
          success: suCb,
          error: erCb
        };
      console.log("查询参数", postData);
      that.$https(palyParam);
    },
    // 查询按钮
    findRes() {
      this.currentPage = 1;
      this.dataInit();
    },
    // 点击弹出
    handleAdd(row) {
      console.log(row);
      this.rightFlag = false;
      if (row !== "1") {
        this.rightFlag = true;
        this.dialogTitle = "编辑大区负责人";
        this.dialog.userPhone = row.userPhone;
        this.dialog.userTruename = row.userTruename;
        this.dialog.userName = row.userName;
        this.dialog.userStatus = row.userStatus == "1" ? true : false;
        this.dialog.areaId = row.positionId;
        this.dialog.level = row.level;
        this.dialog.area = row.name;
        this.dialog.userPwd = "";
        this.dialog.userId = row.userId;
        this.dialog.orgId = row.orgId;
        this.oldPwd = row.userPwd
        this.rules = {
        userTruename: [
          { required: true, message: "请输入成员姓名", trigger: "blur" },
          { min: 1, max: 8, message: "长度在 1 到 8 个字符", trigger: "blur" }
        ],
        userPwd: [
          { min: 1, max: 16, message: "长度在 1 到 20 个字符", trigger: "blur" }
        ],
        userPhone: [
          { required: true, message: "请输入手机号", trigger: "blur" },
          {
            min: 11,
            max: 11,
            message: "请输入正确的11位手机号码",
            trigger: "blur"
          }
        ],
        areaId: [{ required: true, message: "请选择区域", trigger: "change" }]
      }
      } else {
        this.dialogTitle = "添加大区负责人";
        this.dialog.userPhone = "";
        this.dialog.userTruename = "";
        this.dialog.userName = "";
        this.dialog.userStatus = true;
        this.dialog.areaId = "";
        this.dialog.level = "";
        this.dialog.area = "";
        this.dialog.userPwd = "";
        this.dialog.userId = "";
        this.dialog.orgId = "";
        this.rules = {
          userName: [
            { required: true, message: "请输入成员账号", trigger: "blur" },
            {
              min: 1,
              max: 16,
              message: "长度在 1 到 20 个字符",
              trigger: "blur"
            }
          ],
          userTruename: [
            { required: true, message: "请输入成员姓名", trigger: "blur" },
            { min: 1, max: 8, message: "长度在 1 到 8 个字符", trigger: "blur" }
          ],
          userPwd: [
            { required: true, message: "请输入密码", trigger: "blur" },
            {
              min: 1,
              max: 16,
              message: "长度在 1 到 20 个字符",
              trigger: "blur"
            }
          ],
          userPhone: [
            { required: true, message: "请输入手机号", trigger: "blur" },
            {
              min: 11,
              max: 11,
              message: "请输入正确的11位手机号码",
              trigger: "blur"
            }
          ],
          areaId: [{ required: true, message: "请选择区域", trigger: "change" }]
        };
      }
      this.dialog.flag = true;
    },
    // 项目下拉框change绑定函数
    changeManage(val) {
      let data = this.dialog.orgs.filter(item => {
        if (val == item.Id) {
          return item;
        }
      })[0];
      this.dialog.level = data.level;
      this.dialog.area = data.name;
      console.log(this.dialog);
    },
    // 绑定按钮
    submitBind(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          let that = this,
            suCb = function(res) {
              console.log("绑定结果", res);
              that.$msg("提交成功");
              that.dataInit();
              that.dialog.flag = false;
            },
            erCb = function(res) {},
            palyParam = {
              url: "",
              methods: "post",
              data: {},
              success: suCb,
              error: erCb
            };
          if (that.dialogTitle == "编辑大区负责人") {
            palyParam.url = "/api/web/ProConStructionManage/updateAreaCompany";
          } else {
            palyParam.url = "/api/web/ProConStructionManage/addareaCompany";
          }
          // 深拷贝 表单数据
          let pwd = that.deepClone(this.dialog);
          // 如果没有输入密码，就返回旧密码给后台
          if(pwd.userPwd === ""){
            pwd.userPwd = this.oldPwd;
          }else{
            // 如果有输入新密码，就加密
            pwd.userPwd = this.$md5(pwd.userPwd);
          }
          // 将修改过得新对象赋值给请求参数
          palyParam.data = pwd;
          palyParam.data.userStatus = pwd.userStatus ? "1" : "0";
          console.log("查询参数", palyParam.data);
          that.$https(palyParam);
        } else {
          console.log("error");
          return false;
        }
      });
    },
    // 删除负责人弹窗
    delLeader(row) {
      this.$confirm("确认删除吗？")
        .then(_ => {
          let that = this,
            suCb = res => {
              console.log(res);
              that.$msg("删除成功！");
              that.dataInit();
            };
          let erCb = res => {
            console.log(res);
          };
          let params = {
            url: "/api/web/ProConStructionManage/delArea",
            methods: "post",
            data: { userId: row.userId, orgId: row.orgId },
            success: suCb,
            error: erCb
          };
          that.$https(params);
        })
        .catch(_ => {});
    }
  }
};
</script>

<style scoped>
.component-searchHeader .search-header {
  width: 1100px;
  box-sizing: border-box;
  border: 1px solid rgba(228, 228, 228, 1);
  background-color: rgba(255, 255, 255, 1);
  margin: 20px auto 0;
}

.component-searchHeader .search-header .left-title {
  display: flex;
  justify-content: space-between;
  width: 100%;
  background-color: rgba(243, 243, 243, 1);
  height: 45px;
  box-sizing: border-box;
}

.component-searchHeader .search-header .left-title .left-text {
  width: 20%;
  color: #666;
  line-height: 45px;
  font-family: "微软雅黑";
  font-weight: 400;
  font-size: 12px;
  text-align: left;
  margin: 0 0 0 30px;
}

.component-searchHeader .right {
  width: 70%;
  display: flex;
  justify-content: flex-end;
  margin-right: 30px;
}

.component-searchHeader .right button {
  padding: 0 15px;
  height: 30px;
  margin: 6px 5px;
  line-height: 30px;
  font-size: 12px;
  color: #666;
  background-color: #fff;
  border: 1px solid #ccc;
}

.component-searchHeader .right button:hover {
  background-color: #f3f3f3;
}

.component-search-box {
  width: 1100px;
  height: 60px;
  box-sizing: border-box;
  background-color: #fff;
  border: 1px solid #e4e4e4;
  border-top: none;
  margin: 0 auto;
  text-align: left;
  padding-left: 30px;
  line-height: 60px;
}

.component-search-box .el-input__inner {
  height: 36px;
  display: inline-block;
  vertical-align: middle;
}

.component-listHeader .search-header {
  width: 1100px;
  box-sizing: border-box;
  border: 1px solid rgba(228, 228, 228, 1);
  background-color: rgba(255, 255, 255, 1);
  margin: 20px auto 0;
  border-bottom: 0;
}

.component-listHeader .search-header .left-title {
  display: flex;
  justify-content: space-between;
  width: 100%;
  background-color: rgba(243, 243, 243, 1);
  height: 45px;
  box-sizing: border-box;
}

.component-listHeader .search-header .left-title .left-text {
  width: 20%;
  color: #666;
  line-height: 45px;
  font-family: "微软雅黑";
  font-weight: 400;
  font-size: 12px;
  text-align: left;
  margin: 0 0 0 30px;
}

.component-listHeader .search-header .right {
  width: 70%;
  display: flex;
  justify-content: flex-end;
  margin-right: 10px;
}

.component-listHeader .search-header .right button {
  padding: 0 15px;
  height: 30px;
  width: 80px;
  margin: 6px 5px;
  line-height: 30px;
  font-size: 14px;
  color: #666;
  background-color: #fff;
  border: 1px solid #ccc;
}

.component-listHeader .search-header .right button:hover {
  background-color: #f3f3f3;
}

.component-listHeader .search-header .right .right-select-margin {
  margin-top: 6px;
  margin-right: 8px;
}

.component-table-header {
  width: 1100px;
  margin: 0 auto;
  display: flex;
  border: 1px solid #e4e4e4;
  background-color: #f9fafc;
  height: 45px;
  line-height: 45px;
  padding: 0;
  list-style: none;
  justify-content: space-between;
  box-sizing: border-box;
  border-top: none;
}

.component-table-header li:first-child {
  width: 50px;
}

.component-table-header li:first-child span {
  border-radius: 5px;
  border: 2px solid #aba2a2;
  display: inline-block;
  width: 16px;
  height: 16px;
  margin: 12.5px auto;
  line-height: 16px;
  font-size: 16px;
}

.component-table-header li {
  border-right: 1px solid #e4e4e4;
  font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC";
  font-weight: 650;
  font-style: normal;
  font-size: 14px;
  color: #666666;
}
.component-table-header li:last-child {
  border: none;
}

.component-table-body {
  width: 1100px;
  margin: 0 auto;
  display: flex;
  border: 1px solid #e4e4e4;
  background-color: #fff;
  height: 45px;
  line-height: 45px;
  padding: 0;
  list-style: none;
  justify-content: space-between;
  box-sizing: border-box;
  border-top: none;
}

.component-table-body li {
  font-size: 12px;
  color: #666;
  text-align: center;
  border-right: 1px solid #e4e4e4;
}

.component-table-body li:first-child {
  width: 50px;
}

.component-table-body li:nth-child(2) {
  width: 100px;
}

.component-table-body li:nth-child(3) {
  width: 150px;
}

.component-table-body li:nth-child(4) {
  width: 150px;
}
.component-table-body li:nth-child(5) {
  width: 150px;
}

.component-table-body li:last-child {
  width: 500px;
  border-right: none;
}

.component-table-body li:last-child {
  display: flex;
  justify-content: space-around;
  flex-wrap: wrap;
  padding: 0 auto;
}

.component-table-body li:last-child a {
  display: inline-block;
  text-align: center;
  color: #1abc9c;
  text-decoration: none;
  font-size: 12px;
}

/* 下面都是修改饿了么ui的下拉框和按钮选中后的样式 */

.el-select .el-input.is-focus .el-input__inner,
.el-select .el-input__inner:focus {
  border-color: #e4e4e4;
}

.el-select-dropdown__item.selected {
  color: #666;
  font-weight: 400;
}

.el-select-dropdown {
  min-width: 100px !important;
  top: 50px !important;
  margin-left: 5px;
}
.el-select-dropdown__item {
  height: 26px;
  line-height: 26px;
}

.el-select .el-input__inner {
  width: 100px;
  padding: 0 8px;
  margin: 6px 5px;
}
.component-paging .table-bottom .all-left button {
  background-color: #fff;
}
.component-paging .table-bottom .all-left button:hover {
  background-color: #f3f3f3;
}

.table {
  width: 1100px;
  margin: 0 auto;
}
.options {
  color: #1abc9c;
  padding: 0 5px;
  cursor: pointer;
}
.el-textarea {
  width: 220px;
  vertical-align: top;
}

.component-models .el-form-item {
  width: 512px;
  margin-bottom: 10px;
}
.component-models .el-select {
  left: -50px;
}
</style>
